package com.gitee.sop.order.strategy.common;

import com.alibaba.fastjson.JSONObject;
import com.gitee.sop.order.dto.OrderFormDto;

import java.math.BigDecimal;

/**
 * 订单策略接口
 *
 * @author Admin
 */
public interface OrderStrategy {
    /**
     * 创建订单
     *
     * @param query 订单相关参数
     * @return 订单号
     */
    String createOrder(OrderFormDto query);

    /**
     * 取消订单
     *
     * @param orderNumber      订单号
     * @param thirdOrderNumber 第三方订单号
     * @return
     */
    JSONObject cancel(String orderNumber, String thirdOrderNumber);

    /**
     * 支付
     *
     * @param orderNumber      订单号
     * @param thirdOrderNumber 第三方订单号
     * @param paySerialNumber  支付流水号
     * @param totalPrice       支付金额
     * @return
     */
    boolean paid(String orderNumber, String thirdOrderNumber, String paySerialNumber, BigDecimal totalPrice);

    /**
     * 策略key
     *
     * @return
     */
    int getKey();
}
